#ifndef __studies_architecture_objects__password__h__
#define __studies_architecture_objects__password__h__



/** @file */


/** @todo */

// ==> C++ Headers
#include <string>
#include <iostream>
// ==> 3rds Headers

// ==> Our Headers
#include <studies.architecture.returns/codes.h>


// ==> Namespaces
using namespace std;

// ==> Macro Constants

// ==> Macro Commands


/** ==> namespace of the organization */
namespace studies {
    /** ==> namespace for the project */
    namespace architecture {
        /** ==> displaying, interacting, transmitting, message, server, processor,
            object, storer */ 
        namespace objects {

            // ==> Typedefs 

            // ==> Pre-Declarations

            // ==> Attributes 

            // ==> Functions

            // ==> Classes

            /** 
                @nosubgrouping 
            */
            class password {

                // ==> password - Friends

                /** Class allowed to access private members of @p password, in
                    order to perform tests */
                friend class password_tester;

                /** */
                friend std::ostream & operator << (std::ostream & p_out,
                                                   const password & p_pwd ) {
                    std::cout << p_pwd.m_value;
                    return p_out;
                }
            public:

                // ==> password - Public Internal Types


                // ==> password - Public Constructors

                password(const std::string & p_value) 
                    : m_value (p_value) { }

                /** Destructor */
                ~password( ) {}

                // ==> password - Public Accessors

                // ==> password - Public Helpers

                // ==> password - Public Processors

                // ==> password - Public Operators

                // ==> password - Public Attributes

            private:

                // ==> password - Private Internal Types

                // ==> password - Private Constructors

                // ==> password - Private Accessors

                // ==> password - Private Helpers

                // ==> password - Private Processors

                // ==> password - Private Operators

                // ==> password - Private Attributes

                /** */
                std::string m_value;
            };
        }
    }
}
// =============================================================================
// I M P L E M E N T A T I O N
// =============================================================================

using namespace studies::architecture::objects;


#endif
